このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

「プログラマの常識」ってなによ?

僕は、「プログラマのための***」という続き物をボチボチと(きわめてボチボチと)書いていますが、タイトルに「常識的な知識は仮定するよ」って意味を込めています。んじゃ、「プログラマの常識」って、それなによ? って、実はハッキリしない。

別な事情もあって、「プログラマの常識」をハッキリさせたほうがいいな、と感じたりしてます。客観的な基準なんて求めないのだけど、「プログラマのための***」で暗黙に仮定している常識、それを少し明白にしたいのです、個人的にね。

思い付き順にバババッと並べるけど、次のようなことを知っていて欲しい:

  • コードもデータも(それが所詮ビットコンビネーションだという意味で)一様なこと。
  • メモリセルには、そのコンテンツ(中身)とアドレスがあること。
  • コンテンツもアドレスも、やっぱりビットコンビネーションとしては一様であること。
  • コンピュータの実行は、順次実行以外に、無条件または条件付きジャンプがあること。
  • サブルーチンという一大発明があること。
  • サブルーチンの呼び出し、戻り、スタックフレーム(活動レコード)というメカニズムがあること。
  • サブルーチン引数は普通スタックに積まれること。
  • サブルーチン戻り値は普通レジスタに返されること。
  • 引数渡しに、値渡しと参照渡しがあること。
  • 変数の解釈には、左辺的(アドレス、名前)と右辺的(コンテンツ、値)があること。
  • 静的に割り当てられるコード/データ以外に、実行時のメモリ割り当てがあること。
  • 実行時の割り当て用の領域をヒープと呼ぶこと。
  • 参照である変数/引数/戻り値は、普通ヒープ上のメモリブロックを指すこと。

なんかすごく即物的なことばっかり。でも、僕は理念的な御託でコンピュータと計算現象が理解できるとは思ってはないので、こういうリストになりますね。例えば、「オブジェクトって何?」と聞かれたら、答えはとりあえず「ヒープ上に割り当てられたメモリブロックと、いくつかのサブルーチン群を紐付けて一緒に考えたもの」です。